package com.hqyj.exception;

import com.hqyj.pojo.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 异常处理通知
 * RestControllerAdvice 定义下面的方法返回的数据是对象数据类型
 * @ControllerAdvice 下面方法要加 responsebody注解
 */

@RestControllerAdvice(basePackages = "com.hqyj.controller")
@Slf4j
public class ExceptionAdvice {


    //处理自定义异常ParameterValidException抛出的业务逻辑
    @ExceptionHandler(ParameterValidException.class)
    public R parameterValidException(ParameterValidException e){
        //获取校验结果的提示信息
        if(e.getResult().getAllErrors().size()>0){
            String info=null;
            for(ObjectError obj :e.getResult().getAllErrors()){
                info =obj.getDefaultMessage();
                break;
            }
            return R.error(info);
        }
        return R.ok();

    }

  //处理ArithmeticException 抛出的信息
  @ExceptionHandler(ArithmeticException.class)
  public R arithmeticExceptionException(ArithmeticException e){
         e.printStackTrace();
        return R.error("你操作有错误");
  }



}
